package ec.edu.ups.cidi.siia.plamdep.webcrawler.extractorlinks;
import java.util.ArrayList;
import java.util.List;

import ec.edu.ups.cidi.siia.plamdep.configuracion.ConfiguracionConexionWeb;
import ec.edu.ups.cidi.siia.plamdep.modelo.webcrawler.Bibliografia;
import ec.edu.ups.cidi.siia.plamdep.utils.Log;
import ec.edu.ups.cidi.siia.plamdep.webcrawler.descarga.HtmlUtils;
public class LinksWebProxy implements IExtractorLinks
{
    private List<Bibliografia> resultados=new ArrayList<Bibliografia>(); //el listado de links encontrados
    private HtmlUtils utils=new HtmlUtils();

    public void sacaLinks(String html)
    {
        html=html.replaceAll("\n"," ");
        ArrayList<String> ps=this.utils.obtenerEtiqueta2(html,"<p","/p>", true, 0);
        for(String p:ps)
        {
            String link=HtmlUtils.contentBetween(p,"href=\"","\">");
            if(link.length()>0)
            {
                link=link.replace("href=\"","").replace("\">","");
                link=link.replace("http://webproxy.net/view?q=http%3A%2F%2Fwww.google.com.ec%2Furl%3Fq%3D", "");
                
                try{
                List<String> aux=	this.utils.obtenerEtiqueta2(link, "http", "%26amp|%26amp%", false, 0);
                if(aux.size()>0)
	                {link=aux.get(0);
	                link=link.replaceAll("%26amp", "");
	                link=link.replaceAll("&q[0-9]=", "");
	                link=link.replaceAll("%26amp%3Bsa%3DU", "");
	                link=HtmlUtils.decodeURL(link);
	
	                
	               if(link.startsWith("http://webproxy")==false)
	               { 
	            	   String resumen=HtmlUtils.contentBetween(p, "<td class=\"j\"><font size=\"-1\">", "<font color");
	            	   resumen=HtmlUtils.htmlToText(resumen);
	            	   resultados.add(new Bibliografia(link,resumen));
	            	   //Utils.log(null, Utils.MOD_WEBCRAWLER, Utils.LEVEL_MSG, LinksWebProxy.class, "URL:"+link);
	    			   //Utils.log(null, Utils.MOD_WEBCRAWLER, Utils.LEVEL_MSG, LinksWebProxy.class, "Resumen:"+resumen+"\n");
	    			   if(resultados.size()>=ConfiguracionConexionWeb.limite_results)//limita el numero de resultados
	                     	return;
	                   
	               }
	            }
                }catch (Exception e) {
                	Log.log(e, Log.MOD_WEBCRAWLER,Log.LEVEL_ERROR, LinksWebProxy.class, "Error al extraer enlaces");
			}
            }    
        }
    }
    
    public List<Bibliografia> getLinks() {
        return this.resultados;
    }
    
    public void setContenidoHTML(String html) {
        this.sacaLinks(html);    
    }
}